Public Member Functions | |
| __construct (Folder $folder, $recursion=FALSE, $tempFile=null) | |
| __destruct () | |
| setRecursion ($recursion) | |
| getRecursion () | |
| setTempFile ($tempFile) | |
| getTempFile () | |
| setFolder (Folder $folder) | |
| getFolder () | |
| createArchive () | |
| sendArchive () | |
Static Public Member Functions | |
| static | checkArchiveSize (Folder $folder, $recursion) |
Private Member Functions | |
| logFolderDownload (Folder $folder) | |
Private Attributes | |
| $folder | |
| $recursion | |
| $tempFile | |
Provides a zip archive of a folder.
Definition at line 41 of file class.zipprovider.inc.php.
| ZipProvider::__construct | ( | Folder $ | folder, | |
| $ | recursion = FALSE, |
|||
| $ | tempFile = null | |||
| ) |
Constructor for ZipProvider class.
Basic checks of incomming values. If $tempFile is null, the upload_path is used to create a temporary file for zip creation.
| Folder | $folder Folder | |
| Boolean | $recursion Recursion flag (Default: False) | |
| String | $tempFile Temporary filepath (Default: null) |
Implements ArchiveProvider.
Definition at line 57 of file class.zipprovider.inc.php.
References $recursion, and $tempFile.
00057 { 00058 assert(!is_null($folder)); 00059 assert($folder instanceof Folder); 00060 00061 global $settings; 00062 00063 $this->folder = $folder; 00064 $this->recursion = $recursion; 00065 00066 if (empty($tempFile)) { 00067 $basedir = PATH_TO_ROOT.$settings["upload_path"]; 00068 $basedir .= 'filemanager/courseID/'.$_SESSION['course']; 00069 00070 $tempFile = tempnam($basedir, "archiver"); 00071 } 00072 00073 $this->tempFile = $tempFile; 00074 }
| ZipProvider::__destruct | ( | ) |
Destructor of ZipProvider.
Used to clean up temporary files if needed.
Implements ArchiveProvider.
Definition at line 82 of file class.zipprovider.inc.php.
| static ZipProvider::checkArchiveSize | ( | Folder $ | folder, | |
| $ | recursion | |||
| ) | [static] |
Check archive filesizes.
Calculate the filesize of the folder and its subfolders.
Implements ArchiveProvider.
Definition at line 222 of file class.zipprovider.inc.php.
References $recursion, Folder::getFiles(), and Folder::getSubFolders().
Referenced by Filemanager::getArchivedFolder(), and Folder::getUserIcons().
00222 { 00223 global $resDB; 00224 00225 $size = 0; 00226 00227 $files = $folder->getFiles(); 00228 foreach ($files as $file) { 00229 $size += $file->getSize(); 00230 } 00231 00232 if ($recursion) { 00233 $subFolders = $folder->getSubFolders(); 00234 foreach ($subFolders as $subFolder) { 00235 $size += self::checkArchiveSize($subFolder, $recursion); 00236 } 00237 } 00238 00239 return $size; 00240 }
| ZipProvider::createArchive | ( | ) |
Create an archive of the given Folder.
With or without subfolders, depending on recursion flag.
Implements ArchiveProvider.
Definition at line 147 of file class.zipprovider.inc.php.
00147 { 00148 $zipArchiver = new ZipArchive(); 00149 if ($zipArchiver->open($this->tempFile, ZipArchive::OVERWRITE) !== TRUE) { 00150 throw new ArchiverException("Fehler beim Anlegen des Archivs. ".$this->tempFile); 00151 } 00152 00153 $zipVisitor = new ZipVisitor($zipArchiver, $this->recursion); 00154 $this->folder->archiverAccept($zipVisitor); 00155 00156 if ($zipArchiver->status != ZipArchive::ER_OK) { 00157 throw new ArchiverException("Fehler beim Erzeugen des Archivs: ".$zipArchiver->status); 00158 } 00159 $zipArchiver->close(); 00160 }
| ZipProvider::getFolder | ( | ) |
Getter for archiving folder.
Implements ArchiveProvider.
Definition at line 138 of file class.zipprovider.inc.php.
| ZipProvider::getRecursion | ( | ) |
Getter for recursion flag.
Implements ArchiveProvider.
Definition at line 102 of file class.zipprovider.inc.php.
| ZipProvider::getTempFile | ( | ) |
Getter for temporary file.
Implements ArchiveProvider.
Definition at line 120 of file class.zipprovider.inc.php.
| ZipProvider::logFolderDownload | ( | Folder $ | folder | ) | [private] |
Logging folder download and increment folder download count.
Definition at line 194 of file class.zipprovider.inc.php.
References Folder::getFiles(), Resource::getID(), and Folder::getSubFolders().
Referenced by sendArchive().
00194 { 00195 global $resDB; 00196 00197 $resDB->logResourceDownload($folder->getID()); 00198 00199 $files = $folder->getFiles(); 00200 foreach ($files as $file) { 00201 $resDB->logResourceDownload($file->getID()); 00202 } 00203 00204 if ($this->recursion) { 00205 $subFolders = $folder->getSubFolders(); 00206 foreach ($subFolders as $subFolder) { 00207 $this->logFolderDownload($subFolder); 00208 } 00209 } 00210 }
| ZipProvider::sendArchive | ( | ) |
Send archive to the client.
Send needed header informations and logging folder download and increment folder download count.
Implements ArchiveProvider.
Definition at line 168 of file class.zipprovider.inc.php.
References logFolderDownload().
00168 { 00169 global $resDB; 00170 00171 if (file_exists($this->tempFile)) { 00172 $filename = $resDB->getCourseShortNameByID($this->folder->getCourseID()); 00173 $filename .= "-".$this->folder->getLink().".zip"; 00174 00175 $this->logFolderDownload($this->folder); 00176 00177 header("Content-Type: application/zip"); 00178 header("Content-Disposition: attachment; filename=\"".$filename."\""); 00179 header("Content-Transfer-Encoding: binary"); 00180 header("Content-Length: ".filesize($this->tempFile)); 00181 00182 readfile($this->tempFile); 00183 unlink($this->tempFile); 00184 } else { 00185 throw new ArchiverException("Bereitgestelltes Zip Archive konnte nicht gefunden werden."); 00186 } 00187 }
| ZipProvider::setFolder | ( | Folder $ | folder | ) |
Setter for archiving folder.
Implements ArchiveProvider.
Definition at line 129 of file class.zipprovider.inc.php.
00129 { 00130 $this->folder = $folder; 00131 }
| ZipProvider::setRecursion | ( | $ | recursion | ) |
Setter for recursion flag.
| Boolean | $recursion Recursion flag |
Implements ArchiveProvider.
Definition at line 93 of file class.zipprovider.inc.php.
References $recursion.
00093 { 00094 $this->recursion = $recursion; 00095 }
| ZipProvider::setTempFile | ( | $ | tempFile | ) |
Setter for temporary file.
| String | $tempFile Temporary filepath |
Implements ArchiveProvider.
Definition at line 111 of file class.zipprovider.inc.php.
References $tempFile.
00111 { 00112 $this->tempFile = $tempFile; 00113 }
ZipProvider::$folder [private] |
Definition at line 42 of file class.zipprovider.inc.php.
ZipProvider::$recursion [private] |
Definition at line 43 of file class.zipprovider.inc.php.
Referenced by __construct(), checkArchiveSize(), and setRecursion().
ZipProvider::$tempFile [private] |
Definition at line 44 of file class.zipprovider.inc.php.
Referenced by __construct(), and setTempFile().
1.6.1